package com.yuxi.al.queue;

import java.util.Stack;

/**
 * 使用两个栈实现队列,出完队列需要重新赋值回去
 * Created by yuxi on 2017/8/27.
 */
public class TwoStackImplQueue {


    public static void main(String[] args) {
        Stack s2 = new Stack();
        Stack s1 = new Stack();
        // enqueue
        for (int i = 0; i < 10; i++) {
            enQueueMethod(s1, i);
        }
        System.out.println("start 出队");
        for (int i = 0; i < 10; i++) {
            deQueueMethod(s1, s2);
        }
    }

    /**
     * 出队
     *
     * @param s1
     * @param s2
     */
    private static void deQueueMethod(Stack s1, Stack s2) {
        while (!s1.isEmpty()) {
            s2.push(s1.pop());
        }
        //把s1 元素清除 然后把s2的元素重新复制给s1 保证下一次s1的原因是最新的
        System.out.println(s2.pop());
        while (!s2.isEmpty()) {
            s1.push(s2.pop());
        }
        System.out.println(s1);
    }

    /**
     * 入队
     *
     * @param s1
     * @param k
     */
    public static void enQueueMethod(Stack s1, int k) {
        s1.push(k);
//        System.out.println(s1);
    }

}
